//
// Created by liushuai on 18-8-11.
//
#ifndef EX12_LINKLIST_HPP
#define EX12_LINKLIST_HPP

#include "LinkNode.hpp"
template <typename T>
class LinkList {
private:
    LinkNode<T> *head,*tail;
    LinkNode<T> *setPos(const int i);
public:
    LinkList<T>() {
        //头结点不参与计数
        head = new LinkNode<T>();
        tail = new LinkNode<T>();
    }
    ~LinkList<T>() {
        delete head;
        delete tail;
    }
    void CreateLinkList(int n);        //创建链表
    bool insert(const int position, const T value);  //在指定位置插入结点
    void TraverseLinkList();        //遍历链表
    bool isEmpty();              //判断链表是否为空
    int length();            //链表长度
    bool Delete(const int position);      //删除指定位置结点
    bool clear();          //删除整个链表
    bool getPos(int &pos, const T value);
    bool getValue(const int ind,T & value);
    bool append(const T value);
};


#endif //EX12_LINKLIST_HPP
